// axios的配置文件
import axios from 'axios'
import vue from './main'

// 声明前缀
let baseURL = ''
// 判断环境，判断服务器，修改前缀
if (process.env.NODE_ENV === 'development') {
  // development  开发环境
  baseURL = '/sdrs'
} else if (process.env.NODE_ENV === 'production') {
  // production 生产环境
  baseURL = '/sdrs'
}


// 创建自己的axiox实例
let Axios = axios.create({
  // 共用的前缀
  baseURL: baseURL,
  // 超时时间（ms）
  timeout: 10000
})

// 请求拦截器
let myInterceptor = Axios.interceptors.request.use(config => {

  if (config.url !== "/valid") {
    vue.$store.dispatch("showLoading")
  }

  //从localStorage中获取用户登录信息
  let token = localStorage.getItem("sdrs-token") || ""
  config.headers.authorization = token
  return config

},err => {
  console.log("请求错误");
  console.log(err);
  vue.$store.dispatch("closeLoading")
  return Promise.reject(err);
})

// 响应拦截器
Axios.interceptors.response.use(response => {

  vue.$store.dispatch("closeLoading")
  console.log("数据已经响应");
  console.log("查看一下返回数据的整体", response);
  const data = response.data;
  if (data instanceof Blob) {
    return response.data
  }
  if ("0" !== data.code) {
    vue.$message.error(data.msg)

    if ('1000' === data.code) {
      localStorage.setItem('sdrs-token', "")
      vue.$router.push({ path: '/login' })
      return
  }

    return Promise.reject(data);
  }
  return data.data;

}, err => {
  // 对响应错误做点什么
  vue.$store.dispatch("closeLoading")
  return Promise.reject(err);
})

// 移除拦截器
// Axios.interceptors.request.eject(myInterceptor);

// 封装get和post

// get 需要的参数：url、params
export function get(url, params) {
  return new Promise((resolve, reject) => {
    Axios.get(url, {
      params: params
    })
      .then(res => {
        resolve(res)
      })
      .catch(err => {
        reject(err)
      })
  })
}

// post 需要的参数：url、data
export function post(url, data) {
  return new Promise((resolve, reject) => {
    Axios.post(url, data)
      .then(res => {
        resolve(res)
      })
      .catch(res => {
        reject(res)
      })
  })
}

// 将改好的Axios实例暴露出去
export default Axios
